package com.itlong.cloud.app.dao;

import com.itlong.cloud.POJO.VO.app.engineer.AppEngineerDevicesVO;
import com.itlong.cloud.POJO.VO.app.engineer.AppEngineerDoorDevicesVO;
import com.itlong.cloud.POJO.VO.app.engineer.AppEngineerFloorDevicesVO;
import com.itlong.cloud.POJO.VO.app.engineer.AppEngineerQrCodeDeviceVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 *      工程版APP设备信息数据访问接口。
 * <desc/>
 *
 * @createDate 2017/11/8.
 */
@Mapper
@Repository
public interface IAppEngineerDeviceDao {

    /**
     * <desc>
     *      获取用户门禁设备列表
     * </desc>
     *
     * @param projectId 项目Id
     * @return
     * @author shengen.T
     * @createDate 2017/10/23
     */
    List<AppEngineerDoorDevicesVO> getDoorDevices( @Param("projectId")String projectId);


    /**
     * <desc>
     *      获取用户电梯设备列表
     * </desc>
     *
     * @param projectId 项目Id
     * @return
     * @author shengen.T
     * @createDate 2017/11/8
     */
    List<AppEngineerFloorDevicesVO> getFloorDevices( @Param("projectId")String projectId);
    
     /**
      * <desc>
      *      获取门禁设备机号。
      * <desc/>
      *
      * @param deviceName 设备名称
      * @param projectId 项目编号
      * @return 
      * @author shengen.T
      * @createDate 2017/11/8
      */
    List<AppEngineerDevicesVO> getDoorDeviceId(@Param("deviceName") String deviceName, @Param("projectId") String projectId);

    /**
     * <desc>
     *      获取电梯设备机号。
     * <desc/>
     *
     * @param deviceName 设备名称
     * @param projectId 项目编号
     * @return
     * @author shengen.T
     * @createDate 2017/11/8
     */
    List<AppEngineerDevicesVO> getFloorDeviceId(@Param("deviceName") String deviceName, @Param("projectId") String projectId);

    /**
     * <desc>
     *      获取外呼设备机号。
     * <desc/>
     *
     * @param deviceName 设备名称
     * @param projectId 项目编号
     * @return
     * @author shengen.T
     * @createDate 2017/11/8
     */
    List<AppEngineerDevicesVO> getOutCallDeviceId(@Param("deviceName") String deviceName, @Param("projectId") String projectId);

    /**
     * <desc>
     *      上传电梯阈值。
     * <desc/>
     *
     * @param  deviceUnique 设备唯一编号
     * @return  signal 阈值
     * @author shengen.T
     * @createDate 2017/11/9
     */
    Integer uploadElevatorData(@Param("deviceUnique") String deviceUnique,@Param("signal") String signal);

    /**
     * <desc>
     *      上传门禁阈值。
     * <desc/>
     *
     * @param  deviceUnique 设备唯一编号
     * @return  signal 阈值
     * @author shengen.T
     * @createDate 2017/11/9
     */
    Integer uploadEntranceData(@Param("deviceUnique") String deviceUnique,@Param("signal") String signal);

    /**
     * <desc>
     *      获取二维码绑定的设备信息
     * </desc>
     *
     * @return 二维码绑定的设备信息
     * @author wangzhi
     * @createDate 2020/02/26
     */
    AppEngineerQrCodeDeviceVO getDeviceByQrCode(@Param("qrCodeContent") String qrCodeContent);

    /**
     * <desc>
     *      绑定设备与二维码
     * </desc>
     *
     * @return 受影响行数
     * @author wangzhi
     * @createDate 2020/02/26
     */
    Integer bindingDeviceQrCode(Map<String, Object> params);

    /**
     * <desc>
     *      查询设备数量
     * </desc>
     *
     * @return 受影响行数
     * @author wangzhi
     * @createDate 2020/03/09
     */
    Integer getDeviceCountByParams(Map<String, Object> params);

    /**
     * <desc>
     *      查询设备楼层权限标识
     * </desc>
     *
     * @return 楼层权限标识
     * @author wangzhi
     * @createDate 2020/03/11
     */
    String getNaturalFloorByLogicalFloor(@Param("deviceUnique") String deviceUnique, @Param("floor") String floor);

    /**
     * <desc>
     *      获取电梯设备的楼层
     * </desc>
     *
     * @return 电梯设备的楼层列表
     * @author wangzhi
     * @createDate 2020/03/11
     */
    List<String> getDeviceFloors(@Param("projectId") String projectId, @Param("deviceUnique") String deviceUnique);
}
